flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
FLATTEN(++(x, y)) → FLATTEN(x)
REV(++(x, y)) → REV(x)
REV(++(x, y)) → REV(y)
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(x)
++1(++(x, y), z) → ++1(x, ++(y, z))
FLATTEN(++(x, y)) → ++1(flatten(x), flatten(y))
REV(++(x, y)) → ++1(rev(y), rev(x))
FLATTEN(++(unit(x), y)) → ++1(flatten(x), flatten(y))
FLATTEN(unit(x)) → FLATTEN(x)
++1(++(x, y), z) → ++1(y, z)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
FLATTEN(++(x, y)) → FLATTEN(x)
REV(++(x, y)) → REV(x)
REV(++(x, y)) → REV(y)
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(x)
++1(++(x, y), z) → ++1(x, ++(y, z))
FLATTEN(++(x, y)) → ++1(flatten(x), flatten(y))
REV(++(x, y)) → ++1(rev(y), rev(x))
FLATTEN(++(unit(x), y)) → ++1(flatten(x), flatten(y))
FLATTEN(unit(x)) → FLATTEN(x)
++1(++(x, y), z) → ++1(y, z)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
FLATTEN(++(x, y)) → FLATTEN(x)
FLATTEN(++(unit(x), y)) → FLATTEN(y)
++1(++(x, y), z) → ++1(x, ++(y, z))
FLATTEN(++(x, y)) → ++1(flatten(x), flatten(y))
REV(++(x, y)) → ++1(rev(y), rev(x))
++1(++(x, y), z) → ++1(y, z)
FLATTEN(++(x, y)) → FLATTEN(y)
REV(++(x, y)) → REV(y)
REV(++(x, y)) → REV(x)
FLATTEN(++(unit(x), y)) → FLATTEN(x)
FLATTEN(++(unit(x), y)) → ++1(flatten(x), flatten(y))
FLATTEN(unit(x)) → FLATTEN(x)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
++1(++(x, y), z) → ++1(x, ++(y, z))
++1(++(x, y), z) → ++1(y, z)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
++1(++(x, y), z) → ++1(x, ++(y, z))
++1(++(x, y), z) → ++1(y, z)
nil > ++2
++2: [2,1]
nil: multiset
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
REV(++(x, y)) → REV(y)
REV(++(x, y)) → REV(x)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV(++(x, y)) → REV(y)
REV(++(x, y)) → REV(x)
++2 > REV1
++2: multiset
REV1: [1]
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
FLATTEN(++(x, y)) → FLATTEN(x)
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(x)
FLATTEN(unit(x)) → FLATTEN(x)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
FLATTEN(++(x, y)) → FLATTEN(x)
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(x)
Used ordering: Combined order from the following AFS and order.
FLATTEN(unit(x)) → FLATTEN(x)
++2 > FLATTEN1
++2: multiset
FLATTEN1: [1]
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
FLATTEN(unit(x)) → FLATTEN(x)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
FLATTEN(unit(x)) → FLATTEN(x)
unit1 > FLATTEN1
unit1: multiset
FLATTEN1: [1]
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))